/* wheat.c -- 指数爆炸 */

#include <stdio.h>
#define SQUARES 64

int main(void)
{
  const double CROP = 2E16; // 世界小麦年产量的谷子数
  double current, total; // 由于表示的数非常大，整数类型的范围不足以满足需求，所以使用浮点数来计数
  int count = 1; // 循环计数器

  printf("square\tgrains\t\ttotal \t\tfraction of\n");
  printf("      \tadded \t\tgrains\t\tworld total\n");

  total = current = 1.0; // 第一个格子谷子数是1
  while (count <= SQUARES)
  {
    printf("%6d\t%.2e\t%.2e\t%.2e\n", count, current, total, total/CROP);
    current *= 2.0;
    total += current;
    count++;
  }
  
  return 0;
}